/*
 * Copyright (c) 2025 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the 'License');
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * A variant of Example.ts using native DSL. Redundant comments are removed.
 */

import { BinaryExpression, is, native } from '../../../src';

// For real rules, this should be imported from `qvog-dsl`.
import { MockHint } from '../MockHint';

// using `native` to provide engine capabilities hint
export default native<MockHint>()()
    .match(BinaryExpression)
    // detailed check, context can be destructured
    .when((node, { config }) => {
        function shouldSkip(pos: number) {
            return config.ignoreLines?.includes(pos);
        }

        if (is(node.right, BinaryExpression)) {
            if (shouldSkip(node.pos)) {
                return false;
            }
            return true;
        }

        return false;
    })
    // issue report, will be invoked only if action in `when` returns `true`
    .report({
        message: 'Binary expression found',
    });
